Cross-site request forgery(跨站請求偽造)主要指的是攻擊者透過手段讓受害人的瀏覽器發送偽造Request的方式,導致Server端執行非使用者本人的異動。
最常見的舉例就是銀行轉帳(雖然現實不太可能發生)
攻擊者先寫好一個釣魚網頁,只要你進入網頁,或者送出表單,就透過你的瀏覽器發送HTTP Request到銀行去,轉帳給人頭帳戶。
銀行的Server收到Request之後,就會執行交易嗎?
正常來講不會,如果只是發Request給銀行,那攻擊者自己發就好了。
要特地建一個網站給受害者,讓Request從受害者的瀏覽器發送,是因為Server會認客戶端的cookie
攻擊者沒有受害人的cookie,就無法代替他做交易。
因此,假設受害者剛剛登入了網銀又沒登出,瀏覽器還留著網銀的cookie,而這家網銀又做得很爛,沒有任何安全防護機制,然後受害者點了攻擊者的網站,被偷偷的發送了偽造的Request給銀行,帳戶的錢就在不知不覺之間被轉走了。
針對Cross-site request forgery
常見的解法是每次的Request都塞入CSRF Token給Server端驗證、以及在瀏覽器的HTTP Header加上SameSite Cookie的屬性,限制Cookie只能在自己的網站被使用。